---
title: CollisionBoxRenderer 碰撞箱渲染器
icon: SquareDashed
relatedFile: app/src/core/render/canvas2d/entityRenderer/CollisionBoxRenderer.tsx
---

用于渲染碰撞箱。

这个服务负责将 `CollisionBox` 对象中包含的各种形状渲染到视图上，并根据摄像机的缩放比例调整渲染效果。

基于 `Project` 实例，它能够访问项目的渲染器、摄像机、形状渲染器、曲线渲染器和世界渲染工具，从而实现不同形状的绘制。

## API

### `render(collideBox: CollisionBox, color: Color): void`

渲染给定的碰撞箱。

- `collideBox`: 要渲染的碰撞箱对象，其中包含了一系列形状。
- `color`: 用于渲染碰撞箱的颜色。

该方法会遍历 `collideBox` 中的所有形状，并根据形状的类型调用 `Project` 实例中相应的渲染方法进行绘制：

- 如果形状是 `Rectangle`，则使用 `project.shapeRenderer.renderRect` 渲染矩形。
- 如果形状是 `Circle`，则使用 `project.shapeRenderer.renderCircle` 渲染圆形。
- 如果形状是 `Line`，则使用 `project.curveRenderer.renderSolidLine` 渲染直线。
- 如果形状是 `SymmetryCurve`，则使用 `project.worldRenderUtils.renderSymmetryCurve` 渲染对称曲线。
- 如果形状是 `CubicCatmullRomSpline`，则使用 `project.worldRenderUtils.renderCubicCatmullRomSpline` 渲染三次 Catmull-Rom 样条曲线。

在渲染过程中，它会将世界坐标转换为视图坐标，并根据 `project.camera.currentScale` 调整渲染的尺寸和粗细，以确保在不同缩放级别下碰撞箱的视觉效果一致。
